/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.insta.TP1;

/**
 * Class Bank, implémentée en tant que Singleton
 * 
 * La définition de la design-pattern "Singleton" est :
 *      
 *      " Une classe dont seule une instance peut exister, et 
 *        qui fournit un point d'accès global à cette instance".
 */
public class Bank
{
    
   // 1 :  On déclare une variable statique du meme type que la classe.
   //     Cette variable contiendra l'instance unique de la classe.
    private static Bank _instance = null;
    
    // 2 :  On crée un ou plusieurs constructeurs, mais tous inacessibles
    //      depuis l'extérieur de la classe (donc, soit private, soit protected).
    private Bank()
    {}
    
    // 3 :  On crée la méthode qui renvoie l'instance unique de la classe (i.e.
    //      le point d'accès global à l'instance.
    public static Bank getInstance()
    {
        // Si c'est le 1er appel à cette méthode..
        if (_instance == null)
        {
            // On instancie une fois la classe Bank et l'on stocke cette
            // instance dans la variable de niveau classe "_instance".
            _instance = new Bank();
        }
        
        // et l'on fait renvoyer l'instance précédemment créée..
        return _instance;
    }
    
    
}
